#include "fcntl.h"
#include "error.h"

#include <cstdarg>
#include <fcntl.h>

int Wrap::o_rdonly() {
    return O_RDONLY;
}

int Wrap::o_rdwr() {
    return O_RDWR;
}

int Wrap::o_noctty() {
    return O_NOCTTY;
}

int Wrap::o_nonblock() {
    return O_NONBLOCK;
}

int Wrap::o_cloexec() {
    return O_CLOEXEC;
}

int Wrap::fcntl_(int fd, int cmd, ...) {
    va_list args{};
    va_start(args, cmd);
    auto result = ::fcntl(fd, cmd, args);
    va_end(args);
    return PERROR_NEG(result);
}

int Wrap::open_(const char *path, int flag) {
    return PERROR_NEG(::open(path, flag));
}
